home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Sample Code / SCSI Samples 1.0 / SCSI DriveID Sample 06⁄07 ƒ / Src / ShowAllDriveQueueElements.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-16  |  1.5 KB  |  76 lines  |  [TEXT/KAHL]

  1. /*                                ShowAllDriveQueueElements.c                        */
  2. /*
  3.  * ShowAllDriveQueueElements.c
  4.  * Copyright © 1992-94 Apple Computer Inc. All Rights Reserved.
  5.  *
  6.  * This subroutine scans the linked list of drive queue elements and displays
  7.  * information about each active drive.
  8.  */
  9. #include <stdio.h>
  10. #include <Files.h>
  11. #include <Devices.h>
  12.  
  13. void                    ShowAllDriveQueueElements(void);
  14. void                    ShowOneDriveQueueElement(
  15.         register DrvQEl        *drvQElPtr
  16.     );
  17. void                    ShowSCSIDeviceIdent(
  18.         short                driverRefNum
  19.     );
  20.  
  21. void
  22. ShowAllDriveQueueElements(void)
  23. {
  24.         register DrvQEl        *drvQElPtr;
  25. #define DQEL    (*drvQElPtr)
  26.  
  27.         drvQElPtr = (DrvQEl *) GetDrvQHdr()->qHead;
  28.         while (drvQElPtr != NULL) {
  29.             ShowOneDriveQueueElement(drvQElPtr);
  30.             drvQElPtr = (DrvQEl *) drvQElPtr->qLink;
  31.         }
  32. #undef DQEL
  33. }
  34.  
  35. void
  36. ShowOneDriveQueueElement(
  37.         register DrvQEl        *drvQElPtr
  38.     )
  39. {
  40. #define DQEL    (*drvQElPtr)
  41.  
  42.         printf("Drive %2d, driver %3d,", (int) DQEL.dQDrive, (int) DQEL.dQRefNum);
  43.         switch (DQEL.qType) {
  44.         case 0:
  45.             printf(
  46.                 "%8lu blocks (small drive)",
  47.                 (unsigned long) DQEL.dQDrvSz
  48.             );
  49.             break;
  50.         case 1:
  51.             printf(
  52.                 "%8lu blocks (large drive)",
  53.                 ((unsigned long) DQEL.dQDrvSz)
  54.                 + (((unsigned long) DQEL.dQDrvSz2) * 0x10000L)
  55.             );
  56.             break;
  57.         case 3:
  58.             printf(
  59.                 "%8lu blocks (MFS present)",
  60.                 ((unsigned long) DQEL.dQDrvSz)
  61.             );
  62.             break;
  63.         default:
  64.             printf(
  65.                 "%lu %lu blocks (unknown queue type)",
  66.                 ((unsigned long) DQEL.dQDrvSz),
  67.                 ((unsigned long) DQEL.dQDrvSz2)
  68.             );
  69.             break;
  70.         }
  71.         ShowSCSIDeviceIdent(DQEL.dQRefNum);
  72.         printf("\n");
  73. #undef DQEL
  74. }
  75.  
  76.